import  cv2
import  numpy as np
import os
from graph import graph


def fire_detection(picroad,new_path):
 if not os.path.exists(new_path):  # 新建文件夹
        os.mkdir(new_path)
# ============================================= #

# ================主函数======================= #
#遍历文件夹中的所有图片
 a=0
 b=0
 for img_name in os.listdir(picroad):
    #输出读取的图片名
    print (img_name)
    #根据路径读取图片
    imageroad=picroad+img_name
    img=cv2.imread(imageroad)
    #显示图片
    cv2.namedWindow(img_name)
    #颜色空间转换 找到跟踪对象的HSV值
    try:
     imhsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
    #gray = cv2.cvtColor(res,cv2.COLOR_BGR2GRAY)
    #把符合阈值范围内的颜色变白，其余变黑，实现图像的二值化
     lower = np.array([18, 100, 100])
     upper = np.array([35, 255, 255])
     mask = cv2.inRange(imhsv, lower, upper)
    #得到轮廓特征，为了判断图片中是否有火焰
     ret,thresh = cv2.threshold(mask,127,255,0)
     binary,contours,hierarchy = cv2.findContours(thresh, 1, 2)
    #cnt = contours[0]
    #M = cv2.moments(cnt)
    
    
     if len(contours)==0:
      print('本图中没有火焰！')
      a=a+1
     else:
      b=b+1
      #把原图的火焰颜色加到处理后的二值化图片上 更方便观察火势
      fire = cv2.bitwise_and(img,img,mask=mask)
      #Canny边界检测
      #fire = cv2.Canny(mask,100,200)
      cv2.imshow(img_name, fire)
      resultroad=new_path+img_name
      cv2.imwrite(resultroad,fire)
    except cv2.error:
        print('over')

 y=[a,b]
 x=["无","有"]
 graph(x,y)                
 cv2.waitKey(0)  #按任意键退出
 cv2.destroyAllWindows()  #关闭所有窗口
